package com.class05.ioc04;

import lombok.ToString;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.lang.reflect.Field;

@Component

@PropertySource("classpath:Person.properties")
@ToString
//相当于<context:property-placeholder location="classpath:Person.properties"/>
public class JavaObject {
    //    Bean的基本属性赋值：属性赋值赋值：
//    1、通过setter方法赋值
//    2、通过构造方法赋值
//    3、通过反射赋值

//    4、直接赋值
//    5、通过spring中@Value("xxx")赋值
    @Value("张三")
    private String name;
    //    6、通过spring中@Value("${xxx}")赋值 配置文件赋值
    @Value("${person.age}")
    private int age;

//    @Value("${person.classes}")
    private String clesses;

//    情况2: ${key:defaultValue} 没有key,可以给与默认值
    @Value("${person.address:北京}")
    private String address;




    {
//        利用代发块读取person.txt文件内容，并赋值给clesses
//        第一步：创建一个File对象，指定文件路径
        File file = new File("src/main/resources/person.txt");
//        第二部：读取文件内容
        try {
//            第三步：创建文件读取流
            FileReader fileReader = new FileReader(file);
//            第四步：创建字符数组，长度为文件长度
            char[] chars = new char[(int) file.length()];
//            第五步：读取文件内容到字符数组中
            fileReader.read(chars);
//            第六步：将字符数组转换为字符串
            clesses = new String(chars);
//            第七步：关闭文件读取流
            fileReader.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


}
